// 常量
const fixData = {
    localStorageName: 'mTomatoClock',
}


// 全局变量 - 一般
var globalData = {
    windowZIndex: 99, // 窗体的z-index（点一下一个窗体的z-index就+1，初始99）
    isMouseDown: false, // 鼠标是否按下
    mouseX: 0, // 鼠标位置（用于移动窗体）
    mouseY: 0, // 鼠标位置（用于移动窗体）
}


// 从localStorage中获得数据
// 从localStorage中获得数据
// 从localStorage中获得数据
let mData = localStorage.getItem(fixData.localStorageName);;
let dataDic = {};

function loadDataFromlocalStorage() {
    if (mData) {
        let dataArr = mData.split(',');
        let eachData = [];
        for (let i = 0; i < dataArr.length; i++) {
            eachData = dataArr[i].split(':');
            dataDic[eachData[0]] = eachData[1];
            eachData = [];
        }
    }
    console.log(dataDic);
};

function writeDataFromlocalStorage(key, value) {
    dataDic[key] = value;
    let dataStr = JSON.stringify(dataDic);
    dataStr = dataStr.substring(1, dataStr.length - 1) // 去掉{}
    dataStr = dataStr.replace(/"/g, ''); // 去掉"  /正则表达式/g = global = 所有的
    localStorage.setItem(fixData.localStorageName, dataStr);
};

function readDataFromlocalStorage(key) {
    if (key in dataDic) {
        return dataDic[key];
    } else {
        return null;
    }
};


// 音效
// 音效
// 音效
function sound(soundName, rate) {
    let audio = {};

    audio["walk"] = new Audio();
    audio["walk"].src = "./sound/" + soundName + ".mp3"
    audio["walk"].volume = soundSilence ? 0 : soundVolume / 100;
    audio["walk"].playbackRate = rate ? rate : 1;;
    audio["walk"].play();
};


// 背景音乐
// 背景音乐
// 背景音乐
function playBGM(musicName) {
    let bgm = $('.bgm');

    if (bgmSilence) { bgmVolume = 0 };
    bgm.attr('src', './music/' + musicName + '.mp3');
    bgm.attr('volume', bgmSilence ? 0 : bgmVolume / 100);
    bgm.trigger('play');
};


// 设置背景音乐音量
// 设置背景音乐音量
// 设置背景音乐音量
function volumeBGM() {
    let bgm = document.querySelector(".bgm");
    if (bgmSilence) {
        bgm.volume = 0;
    } else {
        bgm.volume = bgmVolume / 100;
    };
};


// 窗体通用事件
// 窗体通用事件
// 窗体通用事件

// 移动窗体（注意：是移动它的父元素）
// window.innerWidth = 1020 浏览器页面大小（常量）
// e.pageX = e.clientX = 0~1020 鼠标到浏览器左边的距离
// x = 鼠标到窗体左边的距离
// y = 鼠标到窗体上方的距离
function moveWindow() {
    let moveElement = document.querySelectorAll('.moveable');

    // 用transform来取代left和top移动位置，好处：将left设置为50%，就可以动态居中窗体了。
    for (let i = 0; i < moveElement.length; i++) {
        moveElement[i].addEventListener('mousedown', function(e) {
            globalData.mouseX = e.clientX; // 原来位置20
            globalData.mouseY = e.clientY; //
            let matrix = new DOMMatrixReadOnly(moveElement[i].parentNode.style.transform);
            let translateX = matrix.m41;
            let translateY = matrix.m42;

            function move(e) {
                let x = e.clientX - globalData.mouseX + translateX; // 后来位置19 移动距离 = 19 - 20 = -1
                let y = e.clientY - globalData.mouseY + translateY;
                moveElement[i].parentNode.style.transform = 'translate(' + x + 'px,' + y + 'px)';
            };

            document.addEventListener('mousemove', move);
            document.addEventListener('mouseup', function() {
                document.removeEventListener('mousemove', move);
            });
        });
    };
};

// 关闭窗体
function closeWindow() {
    $(this).parent().css('display', 'none'); // 关闭父亲window，关闭按钮必须写在window的里面第1层
    sound('closewindow');
};

// 点击窗体将其最前置
function frontWindow() {
    $(this).css({ zIndex: globalData.windowZIndex, });
    globalData.windowZIndex++;
}